package de.wittekind.bundesjugendspiele.server.impl;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import crypting.BCrypt;

import de.wittekind.bundesjugendspiele.exceptions.WrongPasswordException;
import de.wittekind.bundesjugendspiele.server.DatabaseConnectionManager;
import de.wittekind.bundesjugendspiele.server.interfaces.Loader;
import de.wittekind.bundesjugendspiele.server.interfaces.RiegenLoader;

public class SQLLoader implements Loader {

	@Override
	public RiegenLoader getRiegenLoader(String user, String password)
			throws IOException, WrongPasswordException {
		String hashedPassword;
		try {
			hashedPassword = getPassword(user);
		} catch (SQLException e) {
			throw new IOException(e.getMessage());
		}
		if (BCrypt.checkpw(password, hashedPassword)) {
			return new SQLRiegenLoader();
		}
		throw new WrongPasswordException();
	}

	private String getPassword(String user) throws SQLException,
			WrongPasswordException {
		Connection c = DatabaseConnectionManager.getConnection();
		Statement s = c.createStatement();
		String sql = "select password from users where username= '" + user
				+ "'";
		ResultSet rs = s.executeQuery(sql);
		while (rs.next()) {
			return rs.getString(1);
		}
		throw new WrongPasswordException();
	}

}
